﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication2
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void btStart_Click(object sender, EventArgs e)
        {
            // Variablen initalisierung
            char[] cPW = tBoxPW.Text.ToCharArray(), cDecrypt = tBoxDecrypt.Text.ToCharArray(),
                cCrypt = new char[tBoxDecrypt.Text.Length];
            int i = 0, ik = 0, iPW=0;
            //Variablen Ende

            tBoxKrypt.Text = "";//Textboxleerung
            for (; i < cDecrypt.Length; i++)
            {
                ik = i % cPW.Length;//reset bei Passwortende
                /*
                if (ik >= cPW.Length)  //resetettet die Stelle im Passwort
                {
                    ik = 0;
                }
                 */
                iPW = Passwort(cPW[ik]);//die Methode um den offset des zeichens zu erhallten
                cCrypt[i] = caesar(cDecrypt[i], iPW);//die Methode zum verschlüsseln
            }
            tBoxKrypt.Text = new string(cCrypt);//Ausgabe
        }
        private int Passwort(char cPW) /*Kontrolliert in welchem Bereich das Passwortzeichen
        ist und wandelt es in den Offset um.*/
        {
            //Variablen       
            int iPw = (int)cPW;

            if ((iPw > 64) && (iPw < 91))
            {
                iPw = (iPw - 64);
            }
            else
            {
                if ((iPw > 47) && (iPw < 58))
                {
                    iPw = (iPw - 48);
                }
                else
                {
                    if ((iPw > 96) && (iPw < 123))
                    {
                        iPw = (iPw - 96);
                    }
                }
            }
            return iPw;
        }
        private char caesar(char cDecrypt, int iPW)
        /*verschüsselt nach dem Bereich der ASCII Tabelle.*/{
            int iZahl = (int)cDecrypt;
            if ((iZahl > 64) && (iZahl < 91))
            {
                iZahl = ((iZahl - 65) + iPW) % 26 + 65;
            }
            else
            {
                if ((iZahl > 47) && (iZahl < 58))
                {
                    iZahl = ((iZahl - 48) + iPW) % 10 + 48;
                }
                else
                {
                    if ((iZahl > 96) && (iZahl < 123))
                    {
                        iZahl = ((iZahl - 97) + iPW) % 26 + 97;
                    }
                }
            }
            return (char)iZahl;//gibt das Verschlüsselte zurück
        }
        private void tBoxPW_TextChanged(object sender, EventArgs e)
        /* keine ahnung was das soll*/{
        }
        private void dtdecrypt_Click(object sender, EventArgs e)
        {
            // Variablen initalisierung
            char[] cPW = tBoxPW.Text.ToCharArray(), cDecrypt = tBoxDecrypt.Text.ToCharArray(),
                cCrypt = new char[tBoxDecrypt.Text.Length];
            int i = 0, ik = 0,iPW=0;
            //Variablen Ende

            tBoxKrypt.Text = "";//Textboxleerung
            for (; i < cDecrypt.Length; i++)
            {
                ik = i % cPW.Length;//reset bei Passwortende
                /*
                if (ik >= cPW.Length)  //resetettet die Stelle im Passwort
                {
                    ik = 0;
                }
                 */
                iPW =26- Passwort(cPW[ik]);//die Methode um den offset des zeichens zu erhallten
                cCrypt[i] = caesar(cDecrypt[i], iPW);//die Methode zum verschlüsseln
            }
            tBoxKrypt.Text = new string(cCrypt);//Ausgabe
        }
    }
}
